// 模版字符串

// 传统定义字符串需要用单引号或者双引号表示, 不支持换行符
const str = 'hello es2015'
console.log(str)

// 模板定义字符串使用 ``， 
const str = `hello es2015`
// 支持插值表达式${name}
const name = 'tom'
const msg = `hello, ${name} --- ${1+2}`
console.log(msg)

// 带标签函数的模板字符串

const name = 'tom'
const gender = true
function myTagFunc(strings ,naem , gender) {
    console.log(strings, name , gender)
    return strings[0] + name + strings[1] + gender + strings[2]
}
// 打印出就是模版字符串内容中分割过后的结果，因为模版字符串当中可能由嵌入的表达式，
//所以这个数组是按照表达式分割过后的静态内容， 模版中可以接受所有的值
const result = myTagFunc`hey,${name} is a ${gender}`
console.log(result)
//场景： 1.文本多语言话；2.检查模版字符串当中存在不安全的字符串；3.小型模版引擎